package top.infopub.mgr.bpa.dao;

import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.infopub.generic.GenericDao;
import top.infopub.mgr.bpa.domain.DeviceCotDomain;
import top.infopub.mgr.bpa.domain.DeviceLedgerDomain;
import top.infopub.mgr.bpa.vo.ContractManageVo;
import top.infopub.mgr.bpa.vo.DeviceCotVo;
import top.infopub.model.bpa.Basic;
import top.infopub.model.bpa.DeviceCot;

import java.util.List;
import java.util.Map;

/** 设备合同(BPA_DEVICE_COT) **/
@Repository
public interface DeviceCotDao extends GenericDao<DeviceCot, String> {

    /**
     * 根据条件查询分页数据
     * @param deviceCotVo
     * @return 
     * @see
     */
    Page<DeviceCotDomain> selectByDomainWhere(DeviceCotVo deviceCotVo);


    /**
     * 设备合同台账
     * @param contractManageVo
     * @return
     * @see
     */
    Page<DeviceLedgerDomain> selectByLedger(ContractManageVo contractManageVo);

    /**
     * 根据条件查询-我审批的分页数据
     * @param deviceCotVo
     * @return 
     * @see
     */
    Page<DeviceCotDomain> selectMyCheckByDomainWhere(DeviceCotVo deviceCotVo);

    /**
     * 插入数据（自带id）
     * @param deviceCot 
     * @see
     */
    void insertById(DeviceCotVo deviceCot);

    /**
     * 根据id查询详情
     * @param id 主键id
     * @return 
     * @see
     */
    DeviceCotVo queryById(String id);
    
    /**
     * 根据项目编号查询最新的记录
     */
    DeviceCotDomain selectByProCode(@Param("proCode")String proCode);
    
    /**
     * 根据合同名称计算对内结算中的 期数(已审批通过)
     */
    int countByName(@Param("names")String names);
	
    /**
     * 查询设备合同的所有信息
     */
    List<DeviceCot> selectByDeviceCots(@Param("visibleProCodes") String visibleProCodes);

    /**
     * 根据条件查询设备合同记录
     * @param deviceCotWhere
     * @return 
     * @see
     */
    List<DeviceCot> selectByDeviceCot(DeviceCot deviceCotWhere);

    DeviceCot findById(String id);
    List<Map<String, String>> projectDropDownBox();
    Basic findByProCode(String proCode);

    void insertDeviceCot(DeviceCot deviceCot);

    void updateDeviceCot(DeviceCot deviceCot);

    List<Map<String, String>> projectCompanyBox();
}